package com.arpa.wms.domain.vo;

import com.arpa.wms.domain.entity.InventoryStatus;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author: Allen chen
 * @Date 2020/8/12
 * @Description:
 */
@Data
@ApiModel(value="GoodsVO对象", description="商品")
public class GoodsVO implements Serializable {

    @ApiModelProperty(value = "数据标识")
    private String code;

    @ApiModelProperty(value = "所属货主")
    private String shipmentCode;

    @ApiModelProperty(value = "货主名称")
    private String shipmentName;

    @ApiModelProperty(value = "仓库")
    private String warehouseCode;

    @ApiModelProperty(value = "客户")
    private String customerCode;

    @ApiModelProperty(value = "商品类型")
    private String typeCode;

    @ApiModelProperty(value = "商品分类名称")
    private String typeName;

    @ApiModelProperty(value = "商品分类")
    private String type;

    @ApiModelProperty(value = "商品分类描述")
    private String typeText;

    @ApiModelProperty(value = "可销售")
    private Integer sale;

    @ApiModelProperty(value = "可采购")
    private Integer purchase;

    @ApiModelProperty(value = "商品名称")
    private String name;

    @ApiModelProperty(value = "混放策略")
    private String storageStrategy;

    @ApiModelProperty(value = "混放策略文案")
    private String storageStrategyText;

    @ApiModelProperty(value = "品牌code")
    private String brandCode;

    @ApiModelProperty(value = "品牌描述")
    private String brandText;

    @ApiModelProperty(value = "商品编码")
    private String goodCode;

    @ApiModelProperty(value = "商品条码")
    private String barCode;

    @ApiModelProperty(value = "基本单位code")
    private String unitCode;

    @ApiModelProperty(value = "基本单位描述")
    private String unitName;

    @ApiModelProperty(value = "单位精度")
    private BigDecimal unitPrecision;

    @ApiModelProperty(value = "规格")
    private String spec;

    @ApiModelProperty(value = "批号")
    private String lotNumber;

    @ApiModelProperty(value = "批次规则描述")
    private String lotRule;

    @ApiModelProperty(value = "保质期")
    private BigDecimal quality;

    @ApiModelProperty(value = "临期预警")
    private BigDecimal earlyWarning;

    @ApiModelProperty(value = "收货预警")
    private BigDecimal receivingWarning;

    @ApiModelProperty(value = "发货预警")
    private BigDecimal sendWarning;

    @ApiModelProperty(value = "库存类型")
    private String stockType;

    @ApiModelProperty(value = "库存类型描述")
    private String stockTypeText;

    @ApiModelProperty(value = "重量")
    private BigDecimal weight;

    @ApiModelProperty(value = "体积")
    private BigDecimal volume;

    @ApiModelProperty(value = "补货倍数")
    private BigDecimal multiple;

    @ApiModelProperty(value = "助记符")
    private String mnemonic;

    @ApiModelProperty(value = "辅助单位")
    private String auxiliaryUnitCode;

    @ApiModelProperty(value = "最低库存量预警")
    private BigDecimal miniStock;

    @ApiModelProperty(value = "状态")
    private String status;

    @ApiModelProperty(value = "状态描述")
    private String statusText;

    @ApiModelProperty(value = "最高库存量预警")
    @TableField("max_stock")
    private BigDecimal maxStock;

    @ApiModelProperty(value = "删除标识")
    private Integer isDeleted;

    @ApiModelProperty(value = "删除标识")
    private Integer deleteFlag;

    @ApiModelProperty(value = "换算数量")
    private BigDecimal convertedQuantity;

    @ApiModelProperty(value = "是否启用批次号")
    private Integer isLotNumber;

    @ApiModelProperty(value = "所属机构")
    private String partyGroupCode;

    @ApiModelProperty(value = "创建人")
    private String createdBy;

    @ApiModelProperty(value = "创建人描述")
    private String createdName;

    @ApiModelProperty(value = "创建时间")
    private Date gmtCreated;

    @ApiModelProperty(value = "修改人")
    private String modifiedBy;

    @ApiModelProperty(value = "修改人描述")
    private String modifiedName;

    @ApiModelProperty(value = "修改时间")
    private Date gmtModified;

    @ApiModelProperty(value = "总数")
    private Long total;

     @ApiModelProperty(value = "商品对应的单位转换列表")
    private List<GoodsUnitConversionVO> units;

    @ApiModelProperty(value = "批次")
    private BatchRuleVO batchRuleVO;

    @ApiModelProperty(value = "商品类型：0普通商品，1组合商品")
    private Integer recordType;

    @ApiModelProperty(value = "进货价格")
    private BigDecimal receiptPrice;

    @ApiModelProperty(value = "销售价格")
    private BigDecimal deliveryPrice;

    @ApiModelProperty(value = "库存状态列表")
    private List<InventoryStatus> inventoryStatusList;
}
